<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        var arr = [1,2,3,[4]] ;

        var newArr = [] ;


        // 深复制
        for(var i = 0 ; i < arr.length ; i++) {
            newArr.push(arr[i])
        }

        console.log(newArr);

        arr.push('a') ;

        console.log(newArr);   // 不影响



        arr[3].push('hi') ;


        console.log(newArr);   // 受影响


        // 如上：arr和newArr 有局部地址共享   没有完成真正的深复制




        // 注意：push 也可以添加数组
        var arr2 = [1,2,3] ;
        arr2.push([4,5]) ;
        console.log(arr2);   // [1,2,3,[4,5]]




        // 二维数组的深复制
        //    如果数组里面的值依然是数组，就把这个数组深复制了以后，再放到新数组中
        var arr = [1,2,3,[4]] ;
        var arr2 = [] ;    // [1,2,3,[4]]
        for(var i = 0 ; i < arr.length ; i++) {
            // 判断是不是数组
            if(arr[i] instanceof Array) {
                // arr[i] 是一个数组   所以声明数组arr3对arr[i]进行深复制
                var arr3 = [] ;
                for(var j = 0 ; j < arr[i].length ; j++) {
                    arr3.push(arr[i][j]) ;
                }
                // 把arr3放入arr2
                arr2.push(arr3) ;
            } else {
                arr2.push(arr[i])
            }
        }

    </script>
    
</body>
</html>